﻿using System;
using System.Text;
using System.Drawing;
using System.Buffers;
using System.Collections;
using System.Collections.Generic;
using System.Runtime.InteropServices;

public static partial class glDRIVE
{
    /*
    函数 gl.jcbj
    jacobi过关法 求矩阵特征向量
    参数 a: a[n][n]实对称矩阵。对角线元素返回特征值。
    参数 n: 
    参数 v: v[n][n]返回特征向量
    参数 eps: 精度要求
    返回值 若矩阵不对称，则显示错误信息，并返回0标志值。
    */

    public static string drive_jcbj()
    {
        int i, j;
        double eps;
        double[,] v = new double[5, 5];
        double[,] a = new double[5, 5]{
            {10.0,1.0,2.0,3.0,4.0},
            {1.0,9.0,-1.0,2.0,-3.0},
            {2.0,-1.0,7.0,3.0,-5.0},
            {3.0,2.0,3.0,12.0,-1.0},
            {4.0,-3.0,-5.0,-1.0,15.0}
        };
        eps = 0.000001;

        string rs = "";
        rs += gl.html_table("Mat A:", a);

        i = gl.jcbj(a, 5, v, eps);
        if (i <= 0) return "error: 0";

        rs += gl.html_table("特征值:", a);
        rs += gl.html_table("特征向量:", v);
        return rs;
    }
}